A file server is a computer that provides file service relating to the organization of information on writeable persistent storage devices, such as memories, tapes or disks. The file server or filer may be embodied as a storage system including a storage operating system that implements a file system to logically organize the information as a hierarchical structure of directories and files on, e.g. the disks. Each “on-disk” file may be implemented as a set of data structures, e.g. disk blocks, configured to store information, such as the actual data for the file. A directory, on the other hand, may be implemented as a specially formatted file in which information about other files and directories are stored.
A filer may be further configured to operate according to a client/server model of information delivery to thereby allow many client systems (clients) to access shared resources, such as files, stored on a server, e.g. the filer. In this model, the client may comprise an application, such as a database management system (DBMS), executing on a computer that “connects” to the filer over a computer network, such as a point-to-point link, shared local area network (LAN), wide area network (WAN) or virtual private network (VPN) implemented over a public network, such as the Internet. Each client may request the services of the filer by issuing file system protocol messages (in the form of packets) to the filer over the network. By supporting a plurality of file system protocols, such as the Network File Service version 4 (NFSv4) and the Direct Access File System (DAFS) protocols, the utility of the filer may be enhanced for networking clients.
A DBMS application is a program that allows one or more users or clients to create and access data stored in a set of files or database coupled to, e.g., a filer. The DBMS application manages client requests to access the database without requiring them to specify the physical location of the data on the storage devices. In handling client requests, the DBMS application ensures the integrity of the data (i.e., ensuring that the data continues to be accessible and is consistently organized as intended) and the security of the data (i.e., ensuring only those with appropriate privileges can access the data). The integrity and security of a database is particularly relevant in parallel or distributed system computing environments.
Clustered computing is a type of parallel or distributed system computing comprising a collection of interconnected computers (or nodes) that cooperate to provide a single, unified computing resource. In a common arrangement of a cluster, at least one of the cluster nodes functions as a file server or filer configured to provide service to the remaining cluster nodes functioning as clients in accordance with the client/server model of information delivery. The clustered computing environments are advantageous, in that they increase availability and scaling of the computing resource, while enhancing the performance of data sharing applications among the interconnected nodes.
An example of clustered computing is clustering at the operating system level among the client and server nodes of a cluster. In this style of clustering, the operating system controls access to the shared resources (files) coupled to a server to thereby ensure a consistent “view” of the files by the client nodes of the cluster. That is, the complexity of coordinating and synchronizing access to shared resources is “hidden” beneath the operating system of each node. Applications executing on the client nodes are unaware that they are executing in a clustered environment. For example, a file stored on a disk attached to a server node “appears” local to a client node by the clustered operating system. The applications executing on the clients may therefore be relatively simple; that is, they may open and close file as if all accesses occur on the local client node.
However, these “naive” applications running on top of a clustered operating system environment require operating system synchronization of each update (modification) made by an application to a shared file. This ensures that updates made by various applications are not lost or incorrectly recorded at the database in a manner that may disrupt the consistent view of the current state of the shared resource. Essentially, the operating system synchronizes all accesses to the shared file on behalf on all requesting clients of the cluster.
A different style of clustered computing is application-style clustering wherein applications, such as a DBMS, generally do not depend on specific operating system services to synchronize client accesses to a shared resource, such as a database. According to this style of clustering, applications accept more responsibility for coordination and synchronization of shared resource accesses in order to simplify their interactions with the operating system. That is, the applications executing on the various client nodes of a cluster communicate in order to coordinate their activities with respect to accessing shared resources of the cluster. Essentially, the only operating system synchronization needed for this cluster application environment involves initial access by each application to open a shared resource (such as a file). Once the application is granted open access, those client applications that have been allowed access to open the file are responsible for coordinating and synchronizing further accesses to the shared file.
The NFSv4 protocol is a distributed file system protocol that extends previous versions of NFS to integrate, among other things, file locking capabilities that enhance client performance when accessing shared resources (files) over high bandwidth networks. An example of a file locking capability is a “share reservation” that grants a client access to open a file and the ability to deny other clients open access to the same file. A share reservation is similar to a file or record lock, except that its granularity is always on an entire file and its lifetime equals the duration of the file open operation. For example, a client application may open a file for read access and acquire a share reservation denying other subsequent open operations that request write access. An NFSv4 open operation takes as parameters the desired access of read or write and, in addition, allows the requesting application to deny read or write access to other client applications.
The DAFS protocol is a file access and management protocol designed for local file sharing or clustered environments. This distributed file system protocol provides low latency, high throughput and low overhead data movement that takes advantage of memory-to-memory networking technologies. Notably, the DAFS protocol defines a set of file management and file access operations for local file sharing requirements. However, the DAFS protocol does not provide support for client requests to open files located on a server of a clustered application environment. The present invention is directed, in part, to providing such support for the DAFS protocol.